# -*- coding: utf-8 -*-
# &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
# DTCloud v2.0
# QQ:35350428
# 邮件:35350428@qq.com
# 手机：13584935775
# 作者：'Amos'
# 公司网址： www.dtcloud360.com
# Copyright 中亿丰数字科技有限公司 2012-2024 Amos
# 日期：2024-01-30
# &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

import os
import dtcloud
from dtcloud import http, _
from . import jinja_filters
from jinja2 import Environment, FileSystemLoader
import logging
from datetime import datetime, timedelta
from dtcloud import api, fields, models

_logger = logging.getLogger(__name__)
from dtcloud.http import request
import json

BASE_DIR = os.path.dirname(os.path.dirname(__file__))
templateLoader = FileSystemLoader(searchpath=BASE_DIR + "/static/templates/")
env = Environment(loader=templateLoader)

env.filters['date_format'] = jinja_filters.date_format
env.filters['reverse'] = jinja_filters.reverse_filter
env.filters['section_filter'] = jinja_filters.section_filter
env.filters['date_filter'] = jinja_filters.date_filter
env.filters['decode'] = jinja_filters.decode


class PageControl(object):
    '''
    @：all_count        ---当前总记录
    @：limit            ---每页显示数量
    @：page             ---当前第几页
    @：show_page_count  ---显示页码的数量
    @：base_url         ---url前缀
    '''

    def __init__(self, base_url, all_count, limit=10, page=0, show_page_count=12):
        self.base_url = base_url  # 路由
        self.all_count = all_count  # 总数
        self.limit = limit  # 每页显示数据
        self.page = page  # 当前要显示的页码
        self.show_page_count = show_page_count  # 显示分页数量
        self.page_html = ''  # 分页html

    def pages(self, current_page):
        # start = (current_page.show_page_count - 1) * self.limit   # 当前页 - 1 * 每页数量 正好为上一个结束位置，作为这一次的开始
        # end = current_page.show_page_count * self.limit   # 当前页 * 每页数量 为这一次结束
        max_page_num, b = divmod(self.all_count, self.limit)
        if b:
            max_page_num += 1
        page_list = ''
        # 首页
        to_start = '<li><a href="%s/1">首页</a></li>' % self.base_url
        page_list += to_start
        # 上一页，如果当前页是第一页，禁用掉上一页按钮
        if current_page.page == 1:
            prev = '<li class="disabled"><a>上页</a></li>'
        else:
            prev = '<li><a href="%s/%s">上页</a></li>' % (self.base_url, current_page.page - 1)
        page_list += prev
        # 开始页码结束页码计算
        half_show_page_count = int(self.show_page_count / 2)  # 显示页码除以2，取整数，算出当前页前后各显示多少
        if max_page_num < self.show_page_count:  # 如果总页码小于显示页码数量，page_end按总页码来计算
            page_start = 1
            page_end = max_page_num
        else:
            if current_page.show_page_count > current_page.page:  # 如果当前页前面不够要显示的页码，page_start从1开始，结束为要显示页码数量
                page_start = 1
                page_end = self.show_page_count
            else:
                if max_page_num - current_page.page <= half_show_page_count:  # 如果当前页后边不够要显示的页码，结束为最后一页，开始为最后一页减去要显示的页码数量+1
                    page_start = max_page_num - self.show_page_count + 1
                    page_end = max_page_num
                else:
                    page_start = current_page.page - half_show_page_count  # 页码足够的时候，开始：当前页减去前边要显示的，结束：当前页加上后边要显示的
                    page_end = current_page.page + half_show_page_count
        # 生成页码html
        for page in range(page_start, page_end + 1):
            if page == current_page.page:  # 如果page为当前页，active
                tpl = '<li class="active"><a href="%s/%s">%s</a></li>' % (self.base_url, page, page)
            else:
                tpl = '<li><a href="%s/%s">%s</a></li>' % (self.base_url, page, page)
            page_list += tpl
        # 下一页，如果当前页是最后一页，禁用掉下一页按钮
        if current_page.page == max_page_num:
            next = '<li class="disabled"><a>下页</a></li>'
        else:
            next = '<li><a href="%s/%s">下页</a></li>' % (self.base_url, current_page.page + 1)
        page_list += next
        # 尾页
        to_end = '<li><a href="%s/%s">尾页</a></li>' % (self.base_url, max_page_num)
        page_list += to_end
        self.page_html = page_list


class WebSite(http.Controller):

    # 运营公司
    @http.route(['/data_company'], type='http', auth="public", website=True, sitemap=True)
    def data_company(self, **kw):
        """
        数据看板
        :param kw:
        :return:
        """
        cr, uid, context, pool = request.cr, dtcloud.SUPERUSER_ID, request.context, request.env
        user = pool['res.users'].sudo().browse(request.session.uid)
        values = {'company': user.company_id}

        try:
            template = env.get_template('company/zh_CN/index.html')
            html = template.render(object=values)
        except IOError:
            template = env.get_template('zh_CN/404.html')
            html = template.render(object=values)
        return html

